Add real ICE restart and stable stream/component teardown APIs to rice-proto#1
Conversation
Co-authored-by: bitflows <19825042+bitflows@users.noreply.github.com>
Co-authored-by: bitflows <19825042+bitflows@users.noreply.github.com>
Co-authored-by: bitflows <19825042+bitflows@users.noreply.github.com>
|
@copilot Please make sure the new restart code is reachable from the C bindings, in a similar fashion to libnice's nice_agent_restart_stream(). I think we don't have per stream restart or close in librice, so you may need to make it on a session level if needed) |
Co-authored-by: bitflows <19825042+bitflows@users.noreply.github.com>
Co-authored-by: bitflows <19825042+bitflows@users.noreply.github.com>
Already addressed in 614207a and a1650a0: the C-facing layers now expose agent/stream restart entry points and stream-level gather/regather, with rice-c/librice wrappers and focused tests. |
rice-protodid not have a real ICE restart path: callers could only recreate the agent, which drops selected pairs, gathered sockets, and live TURN state. This change adds restart semantics at stream and agent scope, plus the missing stream/component removal APIs, while keeping stream ids stable and preserving reusable local transport state.API surface
StreamMut::restart(&mut self, Credentials, Instant)for explicit per-stream restart.StreamMut::restart_with_random_credentials(Instant).Agent::restart(&mut self, Instant)to restart every stream with fresh credentials.Agent::remove_stream(&mut self, usize)andStreamMut::remove_component(&mut self, usize).Restart semantics
StreamStateand the checklist.set_controlling()remains the role control point.Checklist and agent internals
end_of_remote_candidates()restart FIXME by re-arming end-of-candidates across generations.Stable teardown / id reuse
Noneholes.Coverage
Example: